﻿/*
SINACOR - BMF&Bovespa
Arquivo: IConsultaAssessor.cs
Criado em: 31-mai-2010 09:44:16
Arquiteto Responsável: p-wgeneroso
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ComponentModel;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common.Exceptions.FaultContracts;

namespace Sinacor.Servico.Bovespa.Movimento.Service.ServiceContract 
{
    /// <summary>
    /// Serviço de consulta de movimento por Assessor
    /// </summary>
	[ExceptionShielding]
	[ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Movimento.Service.ServiceContract", SessionMode = SessionMode.Allowed)]
	public interface IConsultaAssessor 
	{
		/// <summary>
		/// Consulta uma lista de agentes de um assessor
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarAgentes")]
		List<DataContract.Response.AgenteResponse> ConsultarAgentes(DataContract.Request.FiltroAgenteRequest request);

		/// <summary>
		/// Consulta uma lista de assessores relacionados ao usuário logado
		/// </summary>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarAssessores")]
		List<DataContract.Response.AssessorResponse> ConsultarAssessores();

		/// <summary>
		/// Consulta uma lista de correspondentes
		/// </summary>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarCorrespondentes")]
		List<DataContract.Response.CorrespondenteResponse> ConsultarCorrespondentes();

		/// <summary>
		/// Consulta dados de movimento por assessor conforme filtro.
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarMovimentoAssessores")]
		List<DataContract.Response.ConsultaAssessorResponse> ConsultarMovimentoAssessores(DataContract.Request.FiltroConsultaAssessorRequest request);
	}
}